@multiformats/multiaddr
multiaddr implementation (binary + string representation of network addresses)
About
A standard way to represent addresses that
- support any standard network protocol
- are self-describing
- have a binary packed format
- have a nice string representation
- encapsulate well
Example
import { multiaddr } from '@multiformats/multiaddr'
const addr = multiaddr('/ip4/127.0.0.1/udp/1234')
addr.bytes
addr.toString()
addr.protos()
addr.nodeAddress()
addr.encapsulate('/sctp/5678')
Resolving DNSADDR addresses
DNSADDR is a spec that allows storing a TXT DNS record that contains a Multiaddr.
To resolve DNSADDR addresses, call the .resolve()
function the multiaddr, optionally passing a DNS
resolver.
DNSADDR addresses can resolve to multiple multiaddrs, since there is no limit to the number of TXT records that can be stored.
Example - Resolving DNSADDR Multiaddrs
import { multiaddr, resolvers } from '@multiformats/multiaddr'
import { dnsaddrResolver } from '@multiformats/multiaddr/resolvers'
resolvers.set('dnsaddr', dnsaddrResolver)
const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io')
const resolved = await ma.resolve({
signal: AbortSignal.timeout(5000)
})
console.info(resolved)
Example - Using a custom DNS resolver to resolve DNSADDR Multiaddrs
See the docs for @multiformats/dns for a full breakdown of how to specify multiple resolvers or resolvers that can be used for specific TLDs.
import { multiaddr } from '@multiformats/multiaddr'
import { dns } from '@multiformats/dns'
import { dnsJsonOverHttps } from '@multiformats/dns/resolvers'
const resolver = dns({
resolvers: {
'.': dnsJsonOverHttps('https://cloudflare-dns.com/dns-query')
}
})
const ma = multiaddr('/dnsaddr/bootstrap.libp2p.io')
const resolved = await ma.resolve({
dns: resolver
})
console.info(resolved)
Install
$ npm i @multiformats/multiaddr
Browser <script>
tag
Loading this module through a script tag will make it's exports available as MultiformatsMultiaddr
in the global namespace.
<script src="https://unpkg.com/@multiformats/multiaddr/dist/index.min.js"></script>
API Docs
License
Licensed under either of
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.